<?php

Yii::import('application.modules.nutricion.models._base.BaseAlimentos');

/**
 * Modelo hereda de BaseAlimentos
 */
class Alimentos extends BaseAlimentos {

    /**
     * @return Alimentos
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Alimento|Alimentos', $n);
    }

    public function relations() {
        return array_merge(parent::relations(), array(
            'medida' => array(self::BELONGS_TO, 'Medidas', 'categoria_id'),
        ));
    }

    /**
     * 
     * @return type
     */
    public function attributeLabels() {
        return array(
            'id' => Yii::t('app', 'ID'),
            'categoria_id' => Yii::t('app', 'Categor&iacute;a'),
//            'categoria_id' => Yii::t('app', 'Categor&iacutea'),
            'nombre' => Yii::t('app', 'Nombre'),
            'descripcion' => Yii::t('app', 'Descripci&oacute;n'),
            'subcategoria_id' => Yii::t('app', 'Subcategor&iacute;a'),
//            'descripcion' => Yii::t('app', 'Descripci&oacuten'),
//            'subcategoria_id' => Yii::t('app', 'Subcategor&iacutea'),
            'categoria' => null,
            'subcategoria' => null,
            'cartaAlimentoses' => null,
            'porcionPersonals' => null,
            'valoresNutricionales' => null,
        );
    }

    /**
     * Busca de acuerdo a las paramtros especificados en el array
     * @author Sofia Mejia <asmejia@utn.edu.ec>
     * @return array
     */
    public function searchColumns() {
        return array(
            'nombre:text',
            'descripcion:text',
            'categoria_id:text',
            'subcategoria_id:text',
        );
    }

    public function search(array $columns = null) {
        $criteria = new CDbCriteria;
//        $sort = new CSort;
        $criteria->select = array('t.*');
        $criteria->with = array('categoria', 'subcategoria', 'medida');
        if (isset($_GET['sSearch'])) {
            $criteria->compare('t.nombre', $_GET['sSearch'], true, 'OR');
            $criteria->compare('t.descripcion', $_GET['sSearch'], true, 'OR');
            $criteria->compare('categoria.nombre', $_GET['sSearch'], true, 'OR');
            $criteria->compare('subcategoria.nombre', $_GET['sSearch'], true, 'OR');
        }
        $criteria->compare('t.nombre', $this->nombre, true, 'OR');
        $criteria->compare('t.descripcion', $this->descripcion, true, 'OR');
        $criteria->compare('categoria.nombre', $this->categoria_id, true, 'OR');
        $criteria->compare('subcategoria.nombre', $this->subcategoria_id, true, 'OR');

//        var_dump($criteria->getData);
//        die();
        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
            'sort' => new EDTSort(__CLASS__, $columns),
            'pagination' => new EDTPagination(),
        ));
    }



    /**
     * Busca si la tabla del modelo no esta vacia
     * @author Sofia Mejia <asmejia@utn.edu.ec>
     * @return query
     */
    public function contarDatos() {
        $command = Yii::app()->db->createCommand()
                ->select("count(id) as total")
                ->from($this->tableName());
        $result = $command->queryAll();
        return $result[0]['total'];
    }

    /**
     * Scoops
     *  @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
     * @return 
     */
    public function scopes() {
        return array(
            'ordenAsc' => array(
                'order' => 't.nombre ASC',
            ),
        );
    }

    /**
     * Encuentra los alimentos que no tienen valores nutricionales
     * @author Mauricio Chamorro <mrchamorro@utn.edu.ec>
     * @return \Alimentos
     */
    public function sin_valores_nutricionales() {
        $this->getDbCriteria()->mergeWith(
                array(
                    'join' => 'LEFT JOIN valores_nutricionales vn ON vn.alimentos_id= t.id',
                    'condition' => 'vn.alimentos_id IS NULL',
                )
        );

        return $this;
    }


//    public function sin_porcion_categoria() {
//        $this->getDbCriteria()->mergeWith(
//                array(
////                    'join' => 'LEFT JOIN categoria ct ON ct.id= t.categoria_id ',
////                    'join' => 'LEFT JOIN medidas md ON md.categoria_id= t.categoria',
////                    'condition' => 'ct.id IS NULL',
//                )
//        );
//
//        return $this;
//    }
}
//    public function search() {
//        $criteria = new CDbCriteria;
//        $sort = new CSort;
//
//        $criteria->with = array('categoria', 'subcategoria');
//        $criteria->compare('t.nombre', $this->nombre, true, 'OR');
//        $criteria->compare('t.descripcion', $this->descripcion, true, 'OR');
//        $criteria->compare('categoria.nombre', $this->categoria_id, true, 'OR');
//        $criteria->compare('subcategoria.nombre', $this->subcategoria_id, true, 'OR');
//        /* Sort criteria */
//        $sort->attributes = array(
//            'nombre' => array(
//                'asc' => 't.nombre asc',
//                'desc' => 't.nombre desc',
//            ),
//        );
//        $sort->defaultOrder = 't.nombre asc';
//        return new CActiveDataProvider($this, array(
//            'criteria' => $criteria,
//        ));
//    }